7.6 Fabric Manager Application Programming Interface
7.6.1 CXL Fabric Management (CXL Fabric 管理)
这一节主要介绍了 Fabric Manager (FM) 的基本概念和角色。
- 两种配置方式: CXL 设备可以被静态配置,也可以通过一个 Fabric Manager (FM) 进行动态配置。
- FM 的定义: FM 是一个外部的逻辑过程,它使用本规范中定义的命令来查询和配置系统的运行状态。它决定何时需要重新配置,并启动相应的命令来执行操作。
- FM 的物理形式: FM 可以以多种形式存在,并不局限于某一种特定的硬件。例如:
- 在基板管理控制器 (BMC) 上运行的嵌入式软件。
- 在另一个 CXL 设备或 CXL 交换机上运行的嵌入式固件。
7.6.2 Fabric Management Model (Fabric 管理模型)
这一节描述了 FM 与 CXL 设备进行通信和管理的具体模型。 
- 通信接口: FM 通过 Fabric Manager API (FM API) 命令集来配置 CXL 设备。这些命令通过一个名为 CCI (Command Control Interface) 的接口进行传输。
- CCI 的暴露方式: 设备可以通过以下两种方式之一暴露其 CCI:
- 通过设备的邮箱寄存器 (Mailbox registers)。
- 通过一个支持 MCTP 的接口(例如 SMBus)。
- 管理连接示例: 文件列举了几种 FM 与设备 CCI 之间可能的连接方式:
- 直接连接: FM 可以通过任何支持 MCTP 的互连方式(如 SMBus)直接连接到一个 CXL 设备,并直接向该设备发送 FM 命令。
- 通过交换机隧道化: 如果 FM 直接连接到一个 CXL 交换机,它可以使用交换机作为“隧道”,将 FM 命令传递给连接在该交换机下的 MLD 组件。这是通过向交换机发送一个名为 "Tunnel Management Command" 的特殊命令来实现的。
- 嵌入式 FM: FM 或其部分功能可以被嵌入到一个 CXL 组件内部。这种情况下,嵌入式 FM 与其所在组件硬件之间的通信接口由厂商自行决定,不在此规范范围内。
7.6.4 CXL Switch Management (CXL 交换机管理)
这一节定义了 Fabric Manager (FM) 对 CXL 交换机进行的管理活动。
- FM 的必要性: 对于基本的交换机功能,由 FM 进行动态配置不是必需的,但如果要支持 MLD 或 CXL Fabric 织物拓扑,则必须使用 FM 进行管理。
7.6.4.1 初始配置
- 交换机的非易失性存储器(如 SPI Flash)中,以厂商特定的格式存储了所有必要的初始配置信息。
- 这些初始配置包括:
- 端口配置: 如端口方向(上行或下行)、宽度、支持的速率等。
- 虚拟 CXL 交换机 (VCS) 配置: 如每个 VCS 的 vPPB 数量、初始的端口绑定配置等。
- CCI 访问设置: 包括任何厂商定义的管理权限设置。
7.6.4.2 动态配置
- 初始配置完成后,只要交换机上的 CCI 接口可用,FM 就可以向其发送管理命令。
- FM 可以对 CXL 交换机执行以下动态管理操作:
- 注册以接收和处理来自交换机的事件通知,例如热插拔、意外移除和故障等。
7.6.4.3 MLD 端口管理
- 一个带有 MLD 端口的交换机必须要有一个 FM 来执行以下管理活动:
- LD 绑定/解绑: 将 MLD 中的逻辑设备 (LDs) 绑定或解绑到不同的 VCS。
- 管理命令隧道化: 通过交换机将管理命令转发给 MLD 设备。
7.6.5 MLD Component Management (MLD 组件管理)
这一节描述了 FM 如何管理 MLD 组件本身(通常是支持内存池化的 Type 3 设备)。 
- 连接方式: FM 可以直接连接到 MLD,或者通过将其管理命令“隧道化”穿过 CXL 交换机的 CCI,来连接到该 MLD 设备。
- FM 可执行的操作: FM 可以对 MLD 组件执行以下操作:
- 内存分配和 QoS 遥测管理: 例如,为 MLD 中的每个逻辑设备 (LD) 分配多大的内存容量,并管理其服务质量 (QoS)。
- 安全: 例如,在一个 LD 从主机解绑后,对其进行数据擦除。
7.6.6 系统操作的管理需求 (重要用例)
这部分通过示例说明了 FM 在关键系统操作中的角色和职责。
- 初始系统发现: FM 启动后,会发现所有直接连接的 CXL 设备,并通过
Identify
命令检查其类型和能力。
- CXL 交换机发现: FM 会查询交换机的配置、能力和连接的设备,以建立整个 Fabric 的拓扑视图。
- MLD 和交换机 MLD 端口管理: 如果发现 MLD,FM 需要在使用隧道命令对其进行管理,为后续的 LD 绑定做准备。
- 事件通知: FM 可以向设备注册以接收事件通知,从而能及时响应系统变化,例如 MLD 设备上的“注意按钮”被按下时,协调其热移除流程。
- 端口和 LD 的绑定/解绑: FM 是执行绑定和解绑操作的核心。绑定一个端口会向主机报告一个热添加 (Hot-Add) 事件;解绑则会触发热移除 (Hot-Remove) 流程。
- 热插拔和意外移除: FM 负责处理在未绑定端口上发生的热插拔事件,并在 MLD 组件被意外移除时执行错误处理和端口管理活动。
7.6.7 FM API 命令集
这部分定义了 FM API 的具体命令集。设备根据其类型和能力,必须或可选地支持这些命令集。
- 命令集分类:
- Physical Switch (物理交换机): 管理交换机的物理端口等。
- Virtual Switch (虚拟交换机): 管理 VCS,执行 vPPB 的绑定/解绑。
- MLD Port (MLD 端口): 主要是隧道命令,用于通过交换机管理下游 MLD。
- MLD Component (MLD 组件): 用于配置 MLD 自身的内存分配、QoS 等。
- Multi-Headed Device (多头设备): 用于查询多头设备的 Head-to-LD 映射。
- DCD Management (动态容量设备管理): 用于查询和配置动态容量内存 (Dynamic Capacity Memory)。
- 命令要求: 表格 7-15 中定义了不同设备类型(如 HBR 交换机、MLD)对各个命令集的实现要求(Mandatory/Optional/Prohibited)。
7.6.8 Fabric 管理事件记录
- FM API 使用一个标准的事件记录框架来报告系统事件。
- 本节定义了与 Fabric 管理活动相关的特定事件记录格式,包括:
- 物理交换机事件记录 (Physical Switch Event Records): 报告与物理交换机端口相关的事件,如链路状态变化。
- 虚拟 CXL 交换机事件记录 (Virtual CXL Switch Event Records): 报告与 VCS 和 vPPB 相关的事件,如绑定状态变化。
- MLD 端口事件记录 (MLD Port Event Records): 报告与连接到 MLD 的交换机端口相关的事件,如收到来自 MLD 的错误消息。